<?php
namespace app\back\controller;



use app\common\controller\AdminBase;
use think\Session;

///后端公共控制器
class AdminCommon extends AdminBase
{

    ///构造函数执行一些公共操作
    public function __construct(){
        ///检测登录
        if(config('is_check_login') == true){
            $this->checkLogin();
        }

        ///调用父级方法
        parent::__construct();


    }


    ///检测登录操作
    private function checkLogin(){
        ///获取配置
        $password = config('password.password');
        if(empty($password)){
            $this->error('参数存在异常,请检查配置文件 /config/extra/password.php！',url('/'.ADMIN_ROUT_PREFIX.'/login'),'',1);
        }

        ///检测登录
        $login_mark = session('login_mark');
        if(empty($login_mark)){
            $this->error('请先登录！',url('/'.ADMIN_ROUT_PREFIX.'/login'),'',1);
        }
        $login_mark_key = $login_mark['key'] ?? '';
        $login_mark_login_time = $login_mark['login_time'] ?? '';
        $login_mark_expire_time = $login_mark['expire_time'] ?? 0;
        $now_time = time();
        if($login_mark_key != md5($password.$login_mark_login_time)){
            trace('session存储信息被篡改','error');
            session('login_mark',null);
            $this->error('参数存在异常！',url('/'.ADMIN_ROUT_PREFIX.'/login'),'',1);
        }
        if($now_time >= $login_mark_expire_time){
            session('login_mark',null);
            $this->error('请重新登录！',url('/'.ADMIN_ROUT_PREFIX.'/login'),'',1);
        }
        ///重置失效时间
        $expire_time = $now_time+6*3600;
        Session::set('login_mark.expire_time',$expire_time);

    }

}